首页 / 技术类 / 逆向 / InstallShield 的命令行 ISCmdBld.exe 跟踪简记

InstallShield 的命令行 ISCmdBld.exe 跟踪简记

2009-04-26 16:28:00

翠竹心情 的破解挺好用的,只是命令行程序 ISCmdBld.exe 没有破解,这样就不能批处理打包了。

趁周末稍微研究了下,但是最后结论还没得出来,先简要记一笔,以后再补充。

ISCmdBld.exe

 100419860  /$  6A FF         push    -1                               ;  main 入口
 2
 3004198EB  |.  E8 D079FEFF   call    004012C0
 4
 5
 6
 700401376   .  E8 A54E0100   call    00416220                         ;  疑似加载 ISWiBuild.dll
 8
 9004013C3   .  E8 981B0000   call    00402F60                         ;  这句执行后便会输出 build start at 字样
10
11004013E9   .  FF92 88000000 call    dword ptr [edx+88]               ;  IsWiBuil.6ADE75D0
12
13
14
156ADE7637    E8 845C0000     call    6ADED2C0                              ;
16
17
18
196ADED366    8D4C24 10       lea     ecx, dword ptr [esp+10]          ; esp+10 处等下会存有输出参数
206ADED36A    66:C74424 10 00>mov     word ptr [esp+10], 0
216ADED371    8B06            mov     eax, dword ptr [esi]
226ADED373    8B90 DC000000   mov     edx, dword ptr [eax+DC]
236ADED379    51              push    ecx
246ADED37A    56              push    esi
256ADED37B    FFD2            call    edx                              ; 这里会进行一番验证
266ADED37D    894424 14       mov     dword ptr [esp+14], eax
276ADED381    8D4424 14       lea     eax, dword ptr [esp+14]
286ADED385    50              push    eax
296ADED386    E8 15DFFDFF     call    6ADCB2A0
306ADED38B    66:837C24 10 00 cmp     word ptr [esp+10], 0             ; 这里检查刚才的验证结果
316ADED391    75 48           jnz     short 6ADED3DB                   ; 关键跳转
326ADED393    8DB424 84010000 lea     esi, dword ptr [esp+184]         ; 这里下去就会抛异常了

刚才的

16ADED37B    FFD2            call    edx                              ; 这里会进行一番验证

在实际运行中会跳到 ISAppServices.67F109F0

 167F109F0    8B4424 04       mov     eax, dword ptr [esp+4]
 2
 3...
 4
 567F10A22    68 187F1968     push    68197F18                         ; ASCII "IsProductLicenseValid"
 667F10A27    50              push    eax
 767F10A28    FF15 B4711868   call    dword ptr [<&KERNEL32.GetProcAdd>; kernel32.GetProcAddress
 867F10A2E    85C0            test    eax, eax
 967F10A30    74 1E           je      short 67F10A50
1067F10A32    FFD0            call    eax

之后便找 ISUIServices.IsProducetLicenseValid

翠竹心情破解的主要文件就是 ISUIServices.dll

后来发现一点,把 ISUIServices.dll 换成原版,命令行编译能顺利进行,换成破解版的,就提示许可证过期啥啥。

一个暂时的解决办法是,把上面

16ADED391    75 48           jnz     short 6ADED3DB                   ; 关键跳转

改成

16ADED391    EB 48           jmp     short 6ADED3DB                   ; 关键跳转

就可以用了

文件中地址是 0002D390 (75 -> EB)

但是,后来的编译过程中,发现它又有几次调用了 ISUIServices.IsProducetLicenseValid,所以这个办法可不可靠还是未知数。

暂记,以后有空验证。


首发:https://blog.csdn.net/cnStreamlet/article/details/4125834



NoteIsSite/0.4